package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.Log;

import java.util.List;

public interface LogApi {

    /**
     * 查询用户登录地点
     * @param userId 用户id
     * @return
     */
    String queryUserLocation(Long userId);

    /**
     * 查询用户最近登录时间
     * @param userId 用户id
     * @return
     */
    Long queryUserLogTime(Long userId);

    /**
     * 保存用户登录日志
     * @param log
     * @return
     */
    boolean saveLog(Log log);

    /**
     * 日志翻页
     * @param page 当前页
     * @param pagesize 每页显示数
     * @param UserId 发布动态的用户id
     * @param sortProp 排序字段
     * @param sortOrder sortOrder ascending 升序 descending 降序
     * @param type 用户操作类型
     * @return
     */
    List<Log> queryLog(Integer page, Integer pagesize, Long UserId, String sortProp, String sortOrder);

    /**
     * 查询今日登录次数
     * @param zeroTime 今天0时
     * @param nowTime 当前系统时间
     * @return
     */
    Long queryLoginTimesToday(long zeroTime, long nowTime);

    /**
     * 查询昨日登录次数
     * @param zeroTime 今天0时
     * @param dayTime 昨日0时
     * @return
     */
    Long queryYesterday(long zeroTime, long dayTime);

    /**
     * 今日活跃用户数
     * @param zeroTime 今日0时
     * @param nowTime 当前系统时间
     * @return
     */
    Long queryActiveUsersToday(long zeroTime, long nowTime);

    /**
     * 昨日活跃用户数
     * @param zeroTime 今日0时
     * @param dayTime 昨日0时
     * @return
     */
    Long queryYesterdayUsersToday(long zeroTime, long dayTime);

    /**
     * 前日活跃用户数
     * @param yesterdayDayTime 前日0时
     * @param dayTime 昨日0时
     * @return
     */
    Long queryYesterdayUsersDateTime(long dayTime, long yesterdayDayTime);

    /**
     * 查询所有活跃用户
     * @return
     */
    List<Log> queryActive();

    /**
     * 查询过去30天活跃用户
     * @param zeroTime 今日0时
     * @param monthTime 30日前0时
     * @return
     */
    Long queryActivePassMonth(long nowTime, long monthTime);

    /**
     * 查询过去7天活跃用户
     * @param nowTime 今日0时
     * @param weekTime 7日前0时
     * @return
     */
    Long queryActivePassWeek(long nowTime, long weekTime);

    /**
     * 查询过去7天所有用户使用记录
     * @param zeroTime
     * @param weekTime
     * @return
     */
    List<Log> queryUser(long zeroTime, long weekTime);

    /**
     * 查询当前用户登录次数
     * @param userId
     * @param newTime
     * @param endTime
     * @return
     */
    Long queryUserConut(Long userId, long newTime, long endTime);

    /**
     * 查询指定时间活跃用户数
     * @param ed
     * @param sd
     * @return
     */
    Long queryActiveUserCount(Long sd, Long ed);

    /**
     * 查询指定时间段的用户
     * @param sd
     * @param ed
     * @return
     */
    List<Log> queryNextDayLeft(long sd, long ed);


}
